package com.letoken.platform.repo.utlis;

import com.alibaba.fastjson.JSON;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;

import java.util.Set;

/**
 * redis工具类
 */
public class RedisClient {

	private JedisPool jedisPool;

	public RedisClient(JedisPool jedisPool) {
		this.jedisPool = jedisPool;
	}


	/**
	 * 从Hash中获取对象
	 *
	 * @param key

	 * @return
	 */
	public String get(String key) {
		Jedis jedis = jedisPool.getResource();
		String text = jedis.get(key);
		jedis.close();
		return text;
	}

	public void set(String key,String value ,int time) {
		Jedis jedis = jedisPool.getResource();
		jedis.set(key,value);
		jedis.expire(key,time);

		jedis.close();

	}



	/**
	 * 把对象放入hash中
	 *
	 * @param key
	 * @param field
	 * @param obj
	 * @param seconds
	 */
	public void hset(String key, String field, Object obj, int seconds) {
		Jedis jedis = jedisPool.getResource();
		jedis.hset(key, field, JSON.toJSONString(obj));
		jedis.expire(key, seconds);
		jedis.close();
	}

	/**
	 * 从Hash中获取对象
	 *
	 * @param key
	 * @param field
	 * @return
	 */
	public String hget(String key, String field) {
		Jedis jedis = jedisPool.getResource();
		String text = jedis.hget(key, field);
		jedis.close();
		return text;
	}


	/**
	 * 从Hash中获取对象
	 *
	 * @param
	 * @param
	 * @return
	 */
	public Set<String> getKeys() {
		Jedis jedis = jedisPool.getResource();
		Set<String> keys =  jedis.keys("*");
		jedis.close();
		return keys;

	}


	/**
	 * 从Hash中获取对象,转换成制定类型
	 *
	 * @param key
	 * @param field
	 * @param clazz
	 * @return
	 */
	public <T> T hget(String key, String field, Class<T> clazz) {
		String text = hget(key, field);
		T result = JSON.parseObject(text, clazz);
		return result;
	}

	/**
	 * 从Hash中删除对象
	 *
	 * @param key
	 * @param field
	 */
	public void hdel(String key, String... field) {
		Jedis jedis = jedisPool.getResource();
		jedis.hdel(key, field);
		jedis.close();
	}

	/**
	 * Key 是否存在
	 * @param key
	 * @return
	 */
	public boolean exist(String key){
		Jedis jedis = jedisPool.getResource();
		boolean result =jedis.exists(key);
		jedis.close();
		return result;

	}



}
